4.7 Accessing data through the ActionContext
4.7.1 CaveatEmptor: accessing the session
① ActionContext을 이용하여 session정보에 access (권장하지 않음)
public class Login extends ActionSupport implements UserDAOAware {
User user;
UserDAO userDAO;
public String execute() throws Exception {
user = userDAO.findByCredentials(user.getUsername(),
user.getPassword());
if (user == null) {
return INPUT;
} else {
Map session = ActionContext.getContext().getSession();
session.put("user", user);
return SUCCESS;
}
}
public String doDefault() throws Exception {
return INPUT;
}
public User getUser() {
return user;
}
public void setUserDAO(UserDAO dao) {
this.userDAO = dao;
}
}
② SessionAware 인터페이스 이용하여 session정보에 access (이 방법을 권장)
public class Login extends ActionSupport implements com.opensymphony.webwork.interceptor.SessionAware, UserDAOAware {
Map session;
User user;
UserDAO userDAO;
public void setSession(Map session) {
this.session = session;
}
public String execute() throws Exception {
user = userDAO.findByCredentials(user.getUsername(), user.getPassword());
if (user == null) {
return INPUT;
} else {
session.put("user", user);
return SUCCESS;
}
}
public String doDefault() throws Exception {
return INPUT;
}
public User getUser() {
return user;
}
public void setUserDAO(UserDAO dao) {
this.userDAO = dao;
}
}
4.7.2 Example: accessing the request and response
① ActionContext를 이용하여 access (권장하지 않음)
public String execute() throws Exception {
user = userDAO.findByCredentials(user.getUsername(), user.getPassword());
if (user == null) {
return INPUT;
} else {
ActionContext ctx = ActionContext.getContext();
HttpServletRequest req = ctx.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = req.getSession();
session.setAttribute("user", user);
return SUCCESS;
}
}
② ServletActionContext를 이용하여 access (권장하지 않음)
public String execute() throws Exception {
user = userDAO.findByCredentials(user.getUsername(), user.getPassword());
if (user == null) {
return INPUT;
} else {
HttpServletRequest req = ServletActionContext.getRequest();
HttpSession session = req.getSession();
session.setAttribute("user", user);
return SUCCESS;
}
}
③ ServletRequestAware 를 이용하여 access (이 방법을 권장)
public class Login extends ActionSupport implements ServletRequestAware, UserDAOAware {
HttpServletRequest req;
User user;
UserDAO userDAO;
public void setServletRequest(HttpServletRequest req) {
this.req = req;
}
public String execute() throws Exception {
user = userDAO.findByCredentials(user.getUsername(), user.getPassword());
if (user == null) {
return INPUT;
} else {
HttpSession session = req.getSession();
session.setAttribute("user", user);
return SUCCESS;
}
}
public String doDefault() throws Exception {
return INPUT;
}
public User getUser() {
return user;
}
public void setUserDAO(UserDAO dao) {
this.userDAO = dao;
}
}
문서에 대하여